package com.wutao.panzh.admin.TypeHandler;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;

import java.sql.*;

/**
 * 把数据库中的日期对象，直接映射成我们java类中的String对象
 * 2019年11月17日：手写的第一个TypeHandler
 */

@MappedJdbcTypes(JdbcType.DATE)
public class DateTypeHandler extends BaseTypeHandler<String> {

    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
        //只要字符串相同就可以转换：https://blog.csdn.net/evilcry2012/article/details/45722195
        preparedStatement.setDate(i, Date.valueOf(s));
    }

    /*
         3个get方法是从数据库中拿到对象；
     */
    @Override
    public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
        return resultSet.getString(s);
    }

    @Override
    public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
        return resultSet.getString(i);
    }

    @Override
    public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        return callableStatement.getString(i);
    }
}
